package com.project.Interceptor;

import com.project.util.Verifier;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AuthenticationInterceptor implements HandlerInterceptor {
    /**
     * 该方法在执行 controller 方法之前执行，返回 boolean 。
     * 如果返回值为 true ，表示可以继续访问目标资源。
     * 如果返回值为 false 。则停止访问目标资源。
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        String token=request.getHeader("token");
        String str=Verifier.verifierJwt(token);
        System.out.println("*************");
        System.out.println(str);
        if (StringUtils.hasLength(str)){
            System.out.println("ok");
            return true;
        }else {
            System.out.println("no");
            return false;
        }
    }

    /**
     * 该方法在 preHandle 返回 true 时执行，在 controller 方法执行后，渲染页面之前执行。
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    /**
     *  该方法在preHandle 返回 true 时执行，该方法在渲染页面完成后执行。
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}
